package com.lyr.bank;

public class Bank {
    // 账户余额
    private int account=100;
    // 方法:取钱

    //synchronized关键字实现同步锁；
    // 作用：使得线程在调用该方法时：
    // 1、先判断方法有没有被其它的线程锁住，有锁时，在外等待其他线程结束；
    //   （即使抢占到资源，也必须等待）
    // 2、没有锁时，先将方法上锁，在执行方法；
    public synchronized int getMoney(int order){
        System.out.println(Thread.currentThread().getName()+"正在取款。。。");

        if (account>=order){
            System.out.println("系统正在处理。。。");
            // Math 方法，产生随机数
            long m=(long)(Math.random()*2000+600);
            try {
                // 线程休眠时间
                Thread.sleep(m);

                //Thread.sleep(200);

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            // 当前账户余额
            account-=order;
            // 当前操作对象的信息：返回对当前正在执行的线程对象的引用
            String name=Thread.currentThread().getName();

            System.out.println("尊敬的"+name+"用户,取款金额为："
                    +order+"元，账户余额为："+account+"元");
            return order;
        }else{
            System.out.println("操作失败，您的余额不足。。。。");
            return 0;
        }

    }


}
